Флаги
O D I T S Z A P C ? ? ? ? ? ?
Команда:
IDIV source
Логика:
AL = AX / source ;операнд source - байт AH = remainder or AX = DX:AX / source ;операнд source - слово DX = remainder
Эта команда выполняет деление с учетом знака. Если операнд source является байтом, то IDIV делит значение слова в AX на операнд source, засылая частное в AL и остаток (remainder) в AH. Если же операнд source является словом, то IDIV делит значение двойного слова из DX:AX на операнд source, засылая частное в AX и остаток в DX.
Операнды | Такт байты (слова) | Обращения | Байты | Пример |
регистр8 | 101-112 | - | 2 | IDIV CL |
регистр16 | 165-184 | - | 2 | IDIV CX |
память8 | (107-118)+EA | 1 | 2-4 | IDIV BYTE[SI] |
память16 | (175-194)+EA | 1 | 2-4 | IDIV [BX].WORD_ARRAY |
Примечания:
Если результат слишком велик и не умещается в AL (соотв. AX), то генерируется прерывание INT 0 (деление на ноль), и тогда частное с остатком не определены. Микропроцессоры 80286 и 80386 могут в качестве частного после выполнения этой команды генерировать наибольшее (по абсолютной величине) негативное число (80h или 8000h), однако, 8088/8086 сгенерируют в такой ситуации прерывание INT 0. Когда генерируется прерывание INT 0, то для процессоров 80286 и 80386 запоминаемое значение CS:IP указывает на неудавшуюся команду (т.е. на команду IDIV). Для процессоров 8088/8086 CS:IP указывает, однако, на команду, следующую за неудавшейся командой IDIV.